/*1．学生成绩统计（一维数组）
从键盘输入一个班（全班最多不超过30人）学生某门课的成绩，当输入成绩为负值时，输入结束，分别实现下列功能：
（1）统计不及格人数并打印不及格学生名单；
（2）统计成绩在全班平均分及平均分之上的学生人数，并打印这些学生的名单；
（3）以直方图方式统计各分数段的学生人数及所占的百分比。形式如下：
分数段  学生人数	  图形
<60     3（10%）	  ***
60-69   8（…）  	  ********
70-79	7（…）	      *******
80-89	8（…）	      ********
>=90	4（…）	      ****  
*/
#include <stdio.h>
struct student
{
	char name[10];
	int score;
};

int main()
{
	int a1=0 , a2=0 , a3=0 , a4=0 , a5=0;
	struct student shen[30];
	int i,n,j=0,sum=0;
	double ave;
	printf("考生总人数:");
	scanf("%d",&n);
	
	for(i=0;i<n;i++)
	{
		    printf("请输入第%d个学生名字:\n",i+1);
		    scanf("%s",shen[i].name);
		do{
			printf("该生成绩:");
			scanf("%d",&shen[i].score);
		}while(shen[i].score<0 || shen[i].score>100);
			
	}
		printf("------------------- \n");
		
		for(i=0;i<n;i++)
		{
			if(shen[i].score<60) {    a1++;printf("%s(不及格)\n",shen[i].name);}//不合格名单和不及格人数
			if(shen[i].score>=60 && shen[i].score<=69) a2++;
			if(shen[i].score>=70 && shen[i].score<=79) a3++;
			if(shen[i].score>=80 && shen[i].score<=89) a4++;
			if(shen[i].score>=90)     a5++;
		}
		
		printf("不及格人数=%d\n\n",a1);
		
		for(i=0;i<n;i++)
			sum+=shen[i].score;
		ave=sum/n;
		
		printf("平均分及平均分之上的学生名单:\n");
        printf("----- ------- ------- ----- -------\n");
		
		for(i=0;i<n;i++)//平均分及平均分之上的学生人数
		{
			if(shen[i].score>=ave)
			{
				j++;
				printf("%s  ",shen[i].name);
			}
			if(j%3==0)
				printf("\n");
		}
        printf("\n");
		printf("----- ----- ------- -------- ------\n");
		printf("\n\n");
		
		printf("分数段        学生人数	       图形\n");//直方图统计
		printf("<60           %-d(%.2lf%%)        ",a1,(double)a1/n*100);
		for(i=0;i<a1;i++)
		{
			printf("*");
		}
		printf("\n");
		printf("60-69         %-d(%.2lf%%)        ",a2,(double)a2/n*100);
		for(i=0;i<a2;i++)
		{
			printf("*");
		}
		printf("\n");
		printf("70-79         %-d(%.2lf%%)        ",a3,(double)a3/n*100);
		for(i=0;i<a3;i++)
		{
			printf("*");
		}
		printf("\n");
		printf("80-89         %-d(%.2lf%%)        ",a4,(double)a4/n*100);
		for(i=0;i<a4;i++)
		{
			printf("*");
		}
		printf("\n");
		printf(">=90          %-d(%.2lf%%)        ",a5,(double)a5/n*100);
		for(i=0;i<a5;i++)
		{
			printf("*");
		}
		printf("\n");
	
	return 0;
}
/*考生总人数:10
请输入第1个学生名字:
sd
该生成绩:35
请输入第2个学生名字:
we
该生成绩:65
请输入第3个学生名字:
er
该生成绩:45
请输入第4个学生名字:
rt
该生成绩:85
请输入第5个学生名字:
ty
该生成绩:12
请输入第6个学生名字:
yu
该生成绩:35
请输入第7个学生名字:
iu
该生成绩:49
请输入第8个学生名字:
oi
该生成绩:58
请输入第9个学生名字:
op
该生成绩:46
请输入第10个学生名字:
jk
该生成绩:99
-------------------
sd(不及格)
er(不及格)
ty(不及格)
yu(不及格)
iu(不及格)
oi(不及格)
op(不及格)
不及格人数=7

平均分及平均分之上的学生名单:

we  rt  oi

jk

分数段        学生人数         图形
<60           7(70.00%)        *******
60-69         1(10.00%)        *
70-79         0(0.00%)
80-89         1(10.00%)        *
>=90          1(10.00%)        *
Press any key to continue
*/